/** ****************************************************************** *
 * @author Antoine David - Antoine.David@etu.enseeiht.fr
 * @version 1.0beta (not validated by the client)					   *
 * @date 2/3/11  													   *
 * @brief This file contains the provider for the IPSecPolicy. 		   *
 *																	   *
 * *********************************************************************
 * 
 * This provider is in charge of managing the consistency between 
 * IPSecPolicy (CIM-objects) and IPSec policies configurations.
 *
 * One interesting thing is that it supports standard CIM-operations, 
 * such as create_instance, enumerate_instance, etc.
 *
 * 
 * You'll find more on the technical report. 
 * 
 * 
 * */

#ifndef _IPSecPolicy_Provider_h
#define _IPSecPolicy_Provider_h

#include <cimple/cimple.h>
#include "IPSecPolicy.h"

CIMPLE_NAMESPACE_BEGIN

class IPSecPolicy_Provider
{
public:

    typedef IPSecPolicy Class;

    IPSecPolicy_Provider();

    ~IPSecPolicy_Provider();

    Load_Status load();

    Unload_Status unload();

    Get_Instance_Status get_instance(
        const IPSecPolicy* model,
        IPSecPolicy*& instance);

    Enum_Instances_Status enum_instances(
        const IPSecPolicy* model,
        Enum_Instances_Handler<IPSecPolicy>* handler);

    Create_Instance_Status create_instance(
        IPSecPolicy* instance);

    Delete_Instance_Status delete_instance(
        const IPSecPolicy* instance);

    Modify_Instance_Status modify_instance(
        const IPSecPolicy* model,
        const IPSecPolicy* instance);


    private:
	Array<IPSecPolicy*> _array;

    
 int create_cmd(const char* action,IPSecPolicy* instance);



void debug(const char* level,const char* msg,IPSecPolicy* instance);


};

CIMPLE_NAMESPACE_END


#endif /* _IPSecPolicy_Provider_h */
